package com.wj.service.async.impl;

import com.wj.goods.GoodsInfo;
import com.wj.service.async.IAsyncService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.StopWatch;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.concurrent.TimeUnit;

@Slf4j
@Service
@Transactional
public class AsyncServiceImpl implements IAsyncService {


    /**
     * 异步任务需要加上注解，并指定使用的线程池
     *  异步任务处理两件事：
     *      1. 将商品信息保存到数据表
     *      2. 更新商品缓存
     * @param goodsInfos
     * @param taskId
     */
    @Async("getAsyncExecutor")
    @Override
    public void asyncImportGoods(List<GoodsInfo> goodsInfos, String taskId) {
        log.info("async task running taskId: [{}]", taskId);
        StopWatch watch = StopWatch.createStarted();

        // 1. 如果是 goodsInfo 中存在重复的商品，不保存，直接返回，记录错误日志
        // 请求数据是否合法的标记
        boolean isIllegal = false;

        //将商品信息字段 joint 在一起，用来判断是否存在重复 todo 业务代码

        watch.stop();
        log.info("check and import goos done: [{}ms]",watch.getTime(TimeUnit.MICROSECONDS));
    }
}
